package com.shujujiegou.排序.冒泡选择插入排序算法.选择排序;

/**
 * 1. 从排序中找到最小的元素
 * 2. 如果最小元素不是待排序的第一个元素，将其和第一个元素互换
 * 3. 从余下的N-1个元素中，找出关键字最小的元素，重复1，2，直到结束
 */
public class ChoiceSort {
    public static void main(String[] args) {
        // 定义数组
        int[] array = {4,9,1,5,3};

        // 选择排序
        for(int i = 0; i < array.length  -1; ++i) {
            int min = i;
            for(int j = i + 1; j < array.length; ++j) {
                if(array[min] > array[j]) {
                    min = j;
                }
            }

            if(min != i) {
                swapElement(min, i, array);
            }
        }

        // 打印
        for(int i = 0; i < array.length; ++i) {
            System.out.print(array[i] + " ");
        }
    }

    /**
     * 数组内元素交换
     * @param a
     * @param b
     * @param array
     */
    private static void swapElement(int a, int b, int[] array) {
        int temp = array[a];
        array[a] = array[b];
        array[b] = temp;
    }
}
